'''
python 数据类型
'''

a = 20
b = 5.5
c = True
d = 4+3j
s = "hello"

a_type = type(a)
a_type_type = type(a_type)
b_type = type(b)
c_type = type(c)
d_type = type(d)
s_type = type(s)


# 1. 判断a类型的种类是不是int 
if (isinstance(a,type)):
# if (a_type=='int'):
    print("a_type:{}\r\na_type_type:{}".format(a_type,a_type_type))
    print("b_type:{}\r\nc_type:{}".format(b_type,c_type))
    print("d_type:{}\r\n\ts_type:{}".format(d_type,s_type))

# 1.1 数值运算
if 0:

    inta = 8
    intb = 3
    print("8*3={}, 8/3={}(相除会得到一个小数，整数变小数) "
        .format( inta*intb, round(inta/intb,2)) ) # 保留小数点后两位

    print("8-3={}, 8//3={}(整除得商), ".format(inta-intb, inta//intb))

    print("8%3={}(相除得余数) 2**10(2的10次方)={} ".format( inta//intb, inta%intb,2**10))

# 2. 字符串
if 0:
      
    stra = "C:\\Users\\geshuhan\\Desktop\\ORBBEC_File\\12.ORBBEC_Project"
    # stra = r"C:\Users\geshuhan\Desktop\ORBBEC_File\12.ORBBEC_Project" #与上边一样的效果

    first_name = "wang"
    second_name = "lingshuo"
    print(stra*2,type(stra),len(stra))
    print( first_name*3,first_name,"first_name+second_name:{}"
        .format(first_name+second_name) )

    password = "Ufo123.0"

    # password[1] ='a'这个个错误的语句，python的字符串不能被改变赋值

    print(password[:],password[0:2],password[3:])
    print(password[-5:-2]) #左闭右开


# 3.列表 是python中使用最频繁的类型，其变量可以包含多种类型的成员
# *列表可以被修改,可以切片，也可以索引
if 0:
        
    list_a = ['wls','length',178,'wight',145,3.14]
    print("list_a:{}".format(list_a))

    list_a[0] = 'wahh'
    print("list_a[0]:{}".format(list_a[0]))
    print("list_a[1:3]:{}".format(list_a[1:3]))

    list_b = ['gsh','id',281]
    print('list_b:{}'.format(list_b))

    list_a = list_a+list_b
    print('list_a:{}'.format(list_a))


# 4. 元组(tuple)
# 与列表基本一样，也可以存储多种类型的变量，不过元组成员变量不可以被修改
if 0:
    listv=['name','wls',120,119]
    tuple_a = (30.14,'wls',996,listv) #还可包含列表
    print('tuple_a:{}'.format(tuple_a))
    # print('tuple_a[1]:{}'.format(tuple_a[1]))
    # print('tuple_a[1:2]:{}'.format(tuple_a[1:2]))
    # tuple_a[0]=119 python中的元组禁止修改


# 5.1 sets(集合) 初识
# 不支持索引，切片，相加，相乘的操作
if 0:
    # 集合输出不按顺序来，而且还会自动过滤重复元素的值
    student = {'wls','gsh','huolinfei','wls','xiye','wls'} 
    print(student) #比如这个 就会自动把一个wls删掉

    people_name = 'huolinfe'
    if (people_name in student ):
        print("have {} !".format(people_name))
    else:
        print("not found {} !".format(people_name))

# 5.2 sets(集合)运算 一个无序不重复的元素集合
# 不支持索引，切片，相加，相乘的操作
if 0:
    set_a = set('geshuhan')
    set_b = set('apple')

    print('set_a:{}'.format(set_a))
    print('set_b:{}'.format(set_b))

    # 打印出来的是无序不重复的
    print('a-b:{}'.format(set_a-set_b)) # a集合 减 b集合
    print('a|b:{}'.format(set_a|set_b)) # a和b的并集
    print('a&b:{}'.format(set_a&set_b)) # a和b的交集
    print('a^b:{}'.format(set_a^set_b)) # a的补集，b的补集


# 6.字典
'''
字典(dictionary)是 Python 中另一个非常有用的内置数据类型。
字典是一种映射类型(mapping type)，它是一个无序的键值对(key-value)集合。
关键字(key)必须使用不可变类型,也就是说list和包含可变类型的 tuple 不能做关键字。
在同一个字典中，关键字(key)必须互不相同。
'''
if 1: 
    dic_a = {'gsh':178,'huolinfei':165,'xiaohuohuo':170,'xiye':180}  
    print('dic_a:{}'.format(dic_a)) 
    print("dic_a['xiye']:{}".format(dic_a['xiye'])) 
    print("dic_a['gsh']:{}".format(dic_a['gsh']))  
    # print("dic_a[178]:{}".format(dic_a[178])) 禁止根据值去找键
    # del dic_a['huolinfei']
    # print('del after dic_a:{}'.format(dic_a))
    dic_a['paul'] = 175  
    print('dic_a:{}'.format(dic_a))  
    print('sort dic_a:{}'.format(sorted(dic_a.keys()))) #按照keys value 排序，输出
    print("list(dic_a):{}",format(list(dic_a.keys()))) # 将keys转化成list变量
    dic_name = "huolinfei"
    if((dic_name in dic_a) and ('gsh' not in dic_a) ) :
        print("{} in dic_a".format(dic_name))
    else:
        print("{} not in dic_a".format(dic_name))
    dict([('wls',178),('xiye',165) ])
    
    # dict(wls=110,xiye=120)
    print('dic_a:{}'.format(dict(wls=110,xiye=120)))








    
    










